package project.background.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import fld.background.service.DicItemService;
import fld.background.system.service.impl.BaseServiceImpl;
import fld.project.entity.Company;
import fld.utils.BeanKit;
import fld.utils.Common;
import fld.utils.DataGrid;
import fld.utils.Page;
import fld.utils.Result;
import project.background.dto.CompanyDto;

/**
 * 企业信息service
 * @author yc
 * 2018年12月5日
 */
@Service
public class CompanyService extends BaseServiceImpl<Company,Long>{
	
	@Autowired
	private DicItemService dicItemService;
	
	/**
	 * 查询全部
	 * @param tmap
	 * @return
	 * @author yc
	 * @date 2018年12月7日
	 */
	public List<Map<String,Object>> queryAll(Map<String,Object> tmap){
		List<Company> list = query(CompanyDto.class, tmap);
		List<Map<String,Object>> res = new ArrayList<Map<String,Object>>();
		for (Company t : list) {
			Map<String,Object> m = new HashMap<String,Object>();
			m.put("code", t.getId());
			m.put("text", t.getName());
			res.add(m);
		}
		return res; 
	}
	
	/**
	 * 数据列表
	 * @param tmap
	 * @return
	 * 2018年8月17日
	 * @author yc
	 */
	public DataGrid grid(Map<String,Object> tmap){
		if(!"".equals(Common.nullToEmpty(tmap.get("name")))){
			tmap.put("name","%"+tmap.get("name")+"%");
		}
		Page<Company> page = queryForPage(CompanyDto.class, tmap);
		List<Map<String,Object>> rows = new ArrayList<Map<String,Object>>();
		List<Company> res = page.getRows();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		for (Company t : res) {
			Map<String,Object> map = new HashMap<String,Object>();
			map.put("id", t.getId());
			map.put("createTime", sdf.format(t.getCreateTime()));
			map.put("head", t.getHead());
			map.put("name", t.getName());
			map.put("code", t.getCode());
			map.put("type", t.getType());
			map.put("address", t.getAddress());
			map.put("phone", t.getPhone());
			map.put("email", t.getEmail());
			map.put("mid", t.getMid());
			map.put("area", t.getArea());
			map.put("profession", t.getProfession());
			map.put("numA", t.getNumA());
			map.put("state", t.getState());
			map.put("typeName", dicItemService.convertDicItem("COMPANYTYPE", Common.nullToEmpty(t.getType())));
			map.put("stateName", dicItemService.convertDicItem("STATE", Common.nullToEmpty(t.getState())));
			rows.add(map);
		}
		DataGrid dg = new DataGrid();
		dg.setTotal(page.getTotal());
		dg.setRows(rows);
		dg.setTotalPage(page.getPageCount());
		return dg;
	}
	
	/**
	 * 保存
	 * @param t
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Result saveObj(Company t){
		if("".equals(Common.nullToEmpty(t.getId()))){
			save(t);
		}else{
			Company old = getDao().get(t.getId());
			if(null != old) {
				old.setName(t.getName());
				old.setCode(t.getCode());
				old.setMid(t.getMid());
				old.setPhone(t.getPhone());
				old.setEmail(t.getEmail());
				old.setAddress(t.getAddress());
				old.setArea(t.getArea());
				old.setState(t.getState());
				old.setType(t.getType());
				old.setHead(t.getHead());
				old.setProfession(t.getProfession());
				old.setNumA(t.getNumA());
				save(old);
			}else {
				return new Result(false,"该记录不存在！");
			}
		}
		return new Result(true);
	}
	
	/**
	 * 根据id获取详情
	 * @param id
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Map<String,Object> getInfo(Long id){
		return getInfo(getDao().get(id));
	}
	
	/**
	 * 获取对象详情
	 * @param t
	 * @return
	 * 2018年8月3日
	 * @author yc
	 */
	public Map<String,Object> getInfo(Company t){
		Map<String,Object> map = new HashMap<String,Object>();
		if(null != t){
			map = BeanKit.describe(t);
		}
		return map;
	}
	
	/**
	 * 单个删除
	 * @param id
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Result deleteById(Long id){
		Company t = getDao().get(id);
		if(null != t){
			t.setIsdeleted(true);
			save(t);
		}else {
			return new Result(false,"1");
		}
		return new Result(true);
	}
}
